A crossbar switch fabric provides a network of paths between input ports and output ports. With every cycle, a scheduler of the crossbar switch fabric considers the traffic presented by the input side of the switch, and makes a set of connections from the crossbar switch fabric's inputs to its outputs. Typically, a crossbar switch fabric includes an array of N2 individually operated crosspoints where N is the number of inputs and outputs. Each crosspoint has a possibility of entering into two states, a cross and a bar. A connection between an input port i and an output port j is established by setting the (i,j)th crosspoint switch to a cross state. The scheduler controls the crosspoints. The scheduler considers all packets to be transferred across the crossbar switch fabric and selects a configuration, ensuring that any one instance, each input is connected to at most one output and that each output is connected to at most one input.
Unlike shared buses or shared memory, a crossbar switch fabric connects input and output ports over a dedicated link. Multiple dedicated links can operate at lower speeds than one shared medium, giving crossbar switch fabrics an advantage over other types of switch fabrics from a scalability and cost perspective.
Crossbar fabrics can suffer some performance drawbacks however. With random traffic distributions and multiple inputs, there can be contention for any one of the output ports on the crossbar fabric. When schedulers at multiple input ports attempt to send traffic through one of the output ports at the same time, other traffic at the input ports may become stalled. Thus, what is needed is a mechanism for routing and scheduling traffic through a network that is efficient and cost effective.